🚀 Masterplan: OpenCode 2026

Estrategia definitiva para el desarrollo de software automatizado.

1. La Sinergia de Ecosistema

OpenCode Go El motor diario: Sistema de créditos rodantes ($12/5h). Ideal para modelos de alta eficiencia (DeepSeek V4, Qwen 3.6). Úsalo para el trabajo pesado y escritura de código constante.

OpenCode Zen El respaldo premium: Pago por uso (Pay-as-you-go). Aloja modelos ultra-validados. Actúa como failover automático si se agota Go, o para tareas críticas de auditoría y depuración compleja.

2. Flujo de Trabajo Automatizado

Fase 1: Enrutamiento Inteligente

Configura `opencode.json` con modelos eficientes por defecto y establece la red de seguridad de Zen para no frenar la automatización por límites de cuota.

Fase 2: Mapeo (Modo Plan)

Ejecuta OpenCode en modo de solo lectura para escanear la arquitectura (vía ripgrep) y generar la caché de contexto sin riesgo de modificaciones accidentales.

Fase 3: Construcción (Modo Build)

Delega tareas incrementales. El agente escribe código y ejecuta pruebas automáticas validadas por los servidores LSP integrados. Se bloquea mediante reglas de seguridad para no dañar el entorno local.

Fase 4: Depuración Profunda

Ante bugs críticos, el enrutador cambia temporalmente a modelos de razonamiento (como Kimi K2.6 o modelos Zen premium) para hacer análisis de causa raíz.

3. Archivo de Configuración Maestra

Coloca este código en el archivo opencode.json en la raíz de tu proyecto para orquestar la seguridad y el enrutamiento:


{
	"$schema": "https://opencode.ai/config.json",

	// ── Modelo principal y modelo liviano ──────────────────────────────
	// (antes: routing_strategy.model_mapping.build → modelo principal)
	// (antes: routing_strategy.model_mapping.plan → agente plan)
	"model": "opencode-go/kimi-k2.6",
	"small_model": "opencode-go/deepseek-v4-flash",

	// ── Agentes por tarea ──────────────────────────────────────────────
	// Mapea routing_strategy.model_mapping (plan, build, debug, audit)
	// a agentes reales de OpenCode con modelos específicos.
	"agent": {
		"plan": {
			"model": "opencode-go/qwen3.6-plus",
			"description": "Planificación y arquitectura del proyecto"
		},
		"build": {
			"model": "opencode-go/deepseek-v4-flash",
			"description": "Construcción y desarrollo de código"
		},
		"audit": {
			"model": "opencode-go/glm-5.1",
			"mode": "subagent",
			"description": "Revisión, auditoría y validación de código"
		},
		"debug": {
			"model": "opencode-go/qwen3.6-plus",
			"mode": "subagent",
			"description": "Debugging rápido de bugs sencillos: errores de sintaxis, typos, imports faltantes, lógica simple",
			"prompt": "Eres un debugger eficiente. Enfócate en resolver bugs simples rápidamente: errores de sintaxis, variables mal escritas, imports faltantes, lógica básica incorrecta. Sé conciso y directo. Muestra solo el fix necesario."
		},
		"deep-debug": {
			"model": "opencode-go/glm-5.1",
			"mode": "subagent",
			"description": "Debugging profundo de bugs complejos: race conditions, memory leaks, errores de arquitectura, problemas multi-archivo",
			"prompt": "Eres un debugger experto para problemas complejos. Analiza a fondo: race conditions, memory leaks, errores de estado, problemas de arquitectura, bugs que cruzan múltiples archivos. Explica la causa raíz antes de proponer la solución."
		}
	},

	// ── Permisos (security_restrictions) ───────────────────────────────
	// Mapea security_restrictions.execution_mode: "supervised" → todo pide aprobación por defecto
	// Mapea security_restrictions.terminal_guard.allowed_commands → bash allow
	// Mapea security_restrictions.terminal_guard.banned_commands → bash deny
	// Mapea security_restrictions.file_system_guard → edit/read rules
	"permission": {
		// Default supervisado: todo pide aprobación salvo lo explícitamente permitido
		"*": "ask",
		"read": "allow",
		"list": "allow",
		"grep": "allow",
		"glob": "allow",
		"question": "allow",
		"websearch": "allow",
		"webfetch": "allow",

		// Terminal: comandos permitidos, denegados y el resto pide aprobación
		"bash": {
			"npm test": "allow",
			"npm run build": "allow",
			"npm run *": "ask",
			"vitest *": "allow",
			"git status": "allow",
			"git diff": "allow",
			"git log *": "allow",
			"git add *": "ask",
			"git commit *": "ask",
			"rm -rf *": "deny",
			"curl *": "deny",
			"wget *": "deny",
			"env": "deny",
			"printenv": "deny",
			"*": "ask"
		},

		// Escritura: requiere aprobación (supervisado)
		"edit": "ask",

		// Acceso a directorios externos: denegado por defecto
		"external_directory": "deny"
	},

	// ── Configuración de compactación (context caching) ────────────────
	// Mapea privacy_policy.context_caching.max_tokens_saved
	"compaction": {
		"auto": true,
		"prune": true,
		"preserve_recent_tokens": 64000
	},

	// ── Watcher: respetar .gitignore (privacy_policy.respect_gitignore) ─
	// OpenCode respeta .gitignore por defecto. Reforzamos con ignore patterns
	// para lo que estaba en file_system_guard.write_denylist
	"watcher": {
		"ignore": [
			".env*",
			"dist/**/*",
			"node_modules/**/*",
			".git/**/*"
		]
	},

	// ── Telemetría: deshabilitada (privacy_policy.share_telemetry: false) ─
	"share": "disabled",
	"autoupdate": "notify",

	// ── Experimental (automation_rules.max_consecutive_build_loops) ─────
	"experimental": {
		"continue_loop_on_deny": false
	}
}

4. Inicialización en Repositorios Nuevos

Cómo generar la memoria base (AGENTS.md)

  1. Crea el proyecto vacío e inicializa Git (git init).
  2. Inicia el agente en modo lectura: opencode --mode plan
  3. Proporciona tus requerimientos y pide explícitamente generar la plantilla base.
  4. Guarda el siguiente bloque como AGENTS.md:
# 🤖 Agent Context & Memory (Proyecto: Nombre)

## 🎯 Objetivo del Proyecto
- Reemplazar este texto con la descripción corta del producto (ej: Microservicio de autenticación OAuth2).

## 🛠️ Stack Tecnológico & Restricciones
- **Lenguaje/Entorno:** Node.js v20 (TypeScript)
- **Framework Principal:** Fastify
- **Base de Datos:** PostgreSQL via Prisma ORM
- **Pruebas:** Vitest

## 📐 Arquitectura Propuesta
- Estructura de carpetas: Clean Architecture básica (`/src/domain`, `/src/infrastructure`, `/src/application`).
- El agente debe respetar el tipado estricto de TypeScript.

## 🚦 Estado Actual e Hitos de Automatización
- [x] Inicialización del repositorio y configuración de OpenCode.
- [ ] Configuración de Prisma y modelos de base de datos.
- [ ] Implementación de rutas de registro y login.
- [ ] Suite de pruebas unitarias integradas.

## 📌 Reglas Generales para el Agente (Modo Build)
1. Antes de dar un endpoint por terminado, ejecuta siempre `npm test`.
2. No uses librerías externas adicionales sin preguntar primero en modo Plan.